/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test_tim;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Christian Friedli
 */

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

public class Spiel implements Serializable {

    private List<Spieler> SpielerListe = new ArrayList<Spieler>();
    final static int MAXSPIELER = 4;
    private static int aktuellerSpieler;
   // private Spieler[] Spieler;
//    private Reihe Reihe[];
    public int anzahlKartenAufTisch;
    int letzteRundeKarte = 60;
    String letzteRunde = "letzte Runde";
    
    String test = "test";
    
    public void spielerHinzufügen(Spieler s){
        
        SpielerListe.add(s);
    }
    
    public String getSpielername(int i){
        return SpielerListe.get(i).getName();
    }
    
    public void setTest(String s){
        this.test = s;
    }
    
    


//    // Zu testzwecken
//    // Wenn man eine Reihe aufnehmen möchte
//    public int reiheWahlen() {
//        Scanner ReiheAuswaehlen = new Scanner(System.in);
//        System.out.println("Spieler " + aktuellerSpieler + ": Reihe Aufnehmen! Geben Sie eine Reihe von 1 bis 4 ein: ");
//        int gewaehlteReihe = ReiheAuswaehlen.nextInt();
//        //       System.out.println("Gewähle Reihe: " + gewaehlteReihe);
//
//        return gewaehlteReihe;
//    }
//
//    // Methode prüft ob die Reihe aufgenommen werden kann
//    // mindestens eine Karte und Reihe muss aktiv sein!
//    public boolean checkReiheAufnehmen(int gewaehlteReihe) {
//        boolean check = false;
//        int groesse = Reihe[gewaehlteReihe].reiheGroesse();
//        if (groesse > 0) {
//            check = true;
//        } else {
//            System.out.println("Reihe ungültig! Andere Reihe wählen!");
//        }
//        return check;
//    }
//
//    // Methode prüft ob die gezogenenFarbkarte auf die gewählte Reihe
//    // gelegt werden darf
//    // Reihe muss aktiv sein aber nicht voll (< 3 Karten)
//    public boolean checkKarteAufReihe(int gewaehlteReihe) {
//        boolean check = false;
//        // Reihe muss aktive sein, darf aber nicht voll sein
//        if (Reihe[gewaehlteReihe].reiheAktiv == true && Reihe[gewaehlteReihe].ReiheVoll() == false) {
//            check = true;
//        } else {
//            System.out.println("Die Reihe ist voll oder nicht aktiv! Andere Reihe wählen");
//        }
//        return check;
//    }
//
//    // Methode um abzufagen ob Spieler eine Karte vom Stapel nehmen möchte, oder
//    // eine Reihe aufnehmen möchte
//    public int stapelkarteOderReihe() {
//        System.out.println("Spieler " + aktuellerSpieler + ": Karte vom Stapel (1) oder Reihe (2) aufnehmen?");
//        Scanner auswaehlen = new Scanner(System.in);
//        int auswahl = (int) auswaehlen.nextInt();
//        while ((auswahl != 1) && (auswahl != 2)) {
//            System.out.println("Ihre auswahlt " + auswahl + " ist ungültig. Neue Eingabe: ");
//            auswahl = auswaehlen.nextInt();
//        }
//        return auswahl;
//    }
//
//    public int farbkarteAufReihe() {
//        System.out.println("Spieler " + aktuellerSpieler + ": Reihe wählen, auf welche Sie die Karte legen möchten (1 bis 4): ");
//        Scanner ReiheAuswaehlen = new Scanner(System.in);
//        int gewaehlteReihe = ReiheAuswaehlen.nextInt();
//        return gewaehlteReihe;
//    }
//
//    public int anzahlAktiverReihen() {
//        int anzahlAktiverReihen = 0;
//        for (int i = 1; i <= 4; i++) {
//            if (Reihe[i].reiheAktiv == true) {
//                anzahlAktiverReihen++;
//            }
//        }
//        return anzahlAktiverReihen;
//    }
//
//    public int anzahlAktiverVollerReihen() {
//        int anzahlAktiverVollerReihen = 0;
//        for (int i = 1; i <= 4; i++) {
//            if (Reihe[i].ReiheVoll() == true) {
//                anzahlAktiverVollerReihen++;
//            }
//        }
//        return anzahlAktiverVollerReihen;
//    }
//
//    // Methode um alle Reihen zu aktivieren
//    public void alleReihenAktivieren() {
//        for (int i = 1; i <= 4; i++) {
//            Reihe[i].ReiheAktivieren();
//        }
//    }
//
//    // Methode um alle Spieler zu aktivieren
//    public void alleSpielerAktivieren() {
//        for (int i = 1; i <= MAXSPIELER; i++) {
//            Spieler[i].setIstAktiv(true);
//        }
//    }
//
//    // Nur für Test
//    // Methode um die Punkte aller 
//    public void punkteDerSpielerAusgeben() {
//    	
//    	int PunkteSpieler1 = Spieler[1].punkteZählen();
//        int PunkteSpieler2 = Spieler[2].punkteZählen();
//        int PunkteSpieler3 = Spieler[3].punkteZählen();
//        int PunkteSpieler4 = Spieler[4].punkteZählen();
//        
//        System.out.println("Spieler 1 hat " + PunkteSpieler1 + " Punkte!");
//        System.out.println("Spieler 2 hat " + PunkteSpieler2 + " Punkte!");
//        System.out.println("Spieler 3 hat " + PunkteSpieler3 + " Punkte!");
//        System.out.println("Spieler 4 hat " + PunkteSpieler4 + " Punkte!");
//        
//        
//    }
//
//    public void ausgabeFarbkartenAllerSpieler() {
//        for (int spieler = 1; spieler <= 4; spieler++) {
//            System.out.println("Die Karte von Spieler " + spieler + " :");
//            int i = Spieler[spieler].aufgenommeneKarten.size();
//            for (int a = 0; a < i; a++) {
//                Farbkarte tmp = Spieler[spieler].aufgenommeneKarten.get(a);
//                System.out.println(tmp);
//            }
//        }
//    }
//
//    public void ausgabeFarbkartenSpieler() {
//        System.out.println("Die Karte von Spieler " + aktuellerSpieler + " :");
//        int i = Spieler[aktuellerSpieler].aufgenommeneKarten.size();
//        for (int a = 0; a < i; a++) {
//            Farbkarte tmp = Spieler[aktuellerSpieler].aufgenommeneKarten.get(a);
//            System.out.println(tmp);
//        }
//    }
//
//    public void ausgabeReihenkarten() {
//        for (int reihe = 1; reihe <= 4; reihe++) {
//            System.out.println("Karten auf Reihe " + reihe + " :");
//            int i = Reihe[reihe].Reihe.size();
//            for (int a = 0; a < i; a++) {
//                Farbkarte karte = Reihe[reihe].karteAufnehmen(a);
//                System.out.print(karte + "  ");
//            }
//            System.out.println();
//        }
//    }
//
//    // Methode um die von der Reihe aufgenommenen Farbkarte dem Spieler zu 
//    // zuteile.
//    // Die Aufgenommene Reihe wird geschlöscht und inaktiv gesetzt
//    public void reiheSpielerUbergeben(int gewaehlteReihe) {
//        //Groesse der aufgenommen Reihe
//        int GroesseStapel = Reihe[gewaehlteReihe].reiheGroesse();
//        // Alle Reihenkarten dem Spieler übergeben
//        for (int i = 0; i < GroesseStapel; i++) {
//            Farbkarte karte = Reihe[gewaehlteReihe].karteAufnehmen(i);
//            Spieler[aktuellerSpieler].karteAufnehmen(karte);
//        }
//        Reihe[gewaehlteReihe].alleKartenLöschen();
//    }
//
//    // Methode um den nächste aktiven Spieler zu ermitteln
//    public int nextPlayer(int aktuellerSpieler) {
//        int nextPlayer = 0;
//        switch (aktuellerSpieler) {
//            case 1:
//                if (Spieler[2].IstAktiv()) {
//                    nextPlayer = 2;
//                    break;
//                } else if (Spieler[3].IstAktiv()) {
//                    nextPlayer = 3;
//                    break;
//                } else if (Spieler[4].IstAktiv()) {
//                    nextPlayer = 4;
//                    break;
//                } else {
//                    nextPlayer = 1;
//                    break;
//                }
//            case 2:
//                if (Spieler[3].IstAktiv()) {
//                    nextPlayer = 3;
//                    break;
//                } else if (Spieler[4].IstAktiv()) {
//                    nextPlayer = 4;
//                    break;
//                } else if (Spieler[1].IstAktiv()) {
//                    nextPlayer = 1;
//                    break;
//                } else {
//                    nextPlayer = 2;
//                    break;
//                }
//            case 3:
//                if (Spieler[4].IstAktiv()) {
//                    nextPlayer = 4;
//                    break;
//                } else if (Spieler[1].IstAktiv()) {
//                    nextPlayer = 1;
//                    break;
//                } else if (Spieler[2].IstAktiv()) {
//                    nextPlayer = 2;
//                    break;
//                } else {
//                    nextPlayer = 3;
//                    break;
//                }
//            case 4:
//                if (Spieler[1].IstAktiv()) {
//                    nextPlayer = 1;
//                    break;
//                } else if (Spieler[2].IstAktiv()) {
//                    nextPlayer = 2;
//                    break;
//                } else if (Spieler[3].IstAktiv()) {
//                    nextPlayer = 3;
//                    break;
//                } else {
//                    nextPlayer = 4;
//                    break;
//                }
//        }
//        return nextPlayer;
//    }

         
    
}